home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / himetr1r / modmain.bas < prev    next >
BASIC Source File  |  1999-08-15  |  8KB  |  234 lines

  1. Attribute VB_Name = "modMain"
  2. '----------------------------------------
  3. '- Name: Sam Huggill
  4. '- Email: sam@vbsquare.com
  5. '- Web: http://www.vbsquare.com/
  6. '- Company: Lighthouse Internet Solutions
  7. '- Date/Time: 14/08/99 11:29:26
  8. '----------------------------------------
  9. '- Notes:   Contains generic routines for
  10. '           the application
  11. '----------------------------------------
  12.  
  13. Option Explicit
  14.  
  15. Private Const EM_FORMATRANGE As Long = WM_USER + 57
  16. Private Const EM_SETTARGETDEVICE As Long = WM_USER + 72
  17. Private Const PHYSICALOFFSETX As Long = 112
  18. Private Const PHYSICALOFFSETY As Long = 113
  19.  
  20. Private Type CharRange
  21.     cpMin As Long     ' First character of range (0 for start of doc)
  22.     cpMax As Long     ' Last character of range (-1 for end of doc)
  23. End Type
  24.  
  25. Private Type FormatRange
  26.     hdc As Long       ' Actual DC to draw on
  27.     hdcTarget As Long ' Target DC for determining text formatting
  28.     rc As RECT        ' Region of the DC to draw to (in twips)
  29.     rcPage As RECT    ' Region of the entire DC (page size) (in twips)
  30.     chrg As CharRange ' Range of text to draw (see above declaration)
  31. End Type
  32.  
  33. Sub WriteError(iErrNum As Integer, sDesc As String, sSource As String, sDate As String, sPath As String)
  34.     '// Writes all errors to err.log
  35.     Dim F As Integer
  36.  
  37.     F = FreeFile
  38.  
  39.     Open sPath For Append As #F
  40.     Print #F, "Error Number: " & iErrNum
  41.     Print #F, "Description: " & sDesc
  42.     Print #F, "Source: " & sSource
  43.     Print #F, "Date: " & sDate
  44.     Print #F, ""
  45.     Close #F
  46.  
  47. End Sub
  48.  
  49. Sub CentreForm(F As Form)
  50.     '// Generic CentreForm Routine
  51.     On Error GoTo vbErrHand
  52.  
  53.     F.tOp = (Screen.Height - F.Height) \ 2
  54.     F.left = (Screen.Width - F.Width) \ 2
  55.  
  56.     Exit Sub
  57.  
  58. vbErrHand:
  59.     WriteError Err.Number, Err.Description, Err.Source, Now, App.Path & "\err.log"
  60.     MsgBox Err.Description, vbCritical + vbOKOnly, "mMain: sCentreForm"
  61. End Sub
  62.  
  63. '**********************************************************************
  64. 'Parsing string function
  65. '**********************************************************************
  66. Public Function ParseString(ByVal vsString As String, ByVal vsDelimiter As String, ByVal viNumber As Integer)
  67.     'Author: Steve Anderson
  68.     'Created   : 13/08/98
  69.     'Purpose   : Parses out a section from a delimited string
  70.  
  71.     Dim iFoundat As Integer
  72.     Dim iFoundatold As Integer
  73.     Dim iCurrentSection As Integer
  74.     Dim sText As String
  75.  
  76.     On Error GoTo vbErrHand
  77.  
  78.     If Len(vsString) > 0 And InStr(vsString, vsDelimiter) > 0 And viNumber > 0 Then
  79.         iFoundat = 1
  80.         iFoundatold = 1
  81.         Do While InStr(iFoundatold + 1, vsString, vsDelimiter) > 0
  82.             iFoundatold = iFoundat
  83.             iFoundat = InStr(iFoundat + 1, vsString, vsDelimiter)
  84.             iCurrentSection = iCurrentSection + 1
  85.         Loop
  86.  
  87.         If viNumber > iCurrentSection Then
  88.             Exit Function
  89.         End If
  90.         iFoundat = 1
  91.         iCurrentSection = 0
  92.         Do
  93.             iFoundatold = iFoundat
  94.             iFoundat = InStr(iFoundat + 1, vsString, vsDelimiter)
  95.             If Trim(sText) = "" Then
  96.                 sText = mID(vsString, 1, iFoundat - 1)
  97.                 iCurrentSection = iCurrentSection + 1
  98.             Else
  99.                 If iFoundat > 0 Then
  100.                     sText = mID(vsString, iFoundatold + 1, (iFoundat - 1) - iFoundatold)
  101.                 Else
  102.                     sText = mID(vsString, iFoundatold + 1)
  103.                 End If
  104.                 iCurrentSection = iCurrentSection + 1
  105.             End If
  106.             If iCurrentSection = viNumber Then
  107.                 ParseString = sText
  108.                 Exit Do
  109.             End If
  110.         Loop
  111.     End If
  112.     ParseString = sText
  113.  
  114.     Exit Function
  115.  
  116. vbErrHand:
  117.     WriteError Err.Number, Err.Description, "ParseString", Now, App.Path & "\err.log"
  118.     MsgBox Err.Description, vbCritical + vbOKOnly, "mMain: ParseString"
  119.  
  120. End Function
  121.  
  122. Function ChooseColour(hwnd As Long) As Long
  123.     Dim CustomColours() As Byte
  124.     ' Define array for custom colours.
  125.     ReDim CustomColours(0 To 15) As Byte
  126.     ' Resize the array to hold the elements.
  127.     Dim tChooseColour As CHOOSECOLOR
  128.     ' Declare a user-defined variable for the ChooseColour
  129.     ' type structure.
  130.     With tChooseColour
  131.         .hwndOwner = hwnd
  132.         ' Set the handle for the owner of the window.
  133.         .lpCustColors = StrConv(CustomColours, vbUnicode)
  134.         ' Pass the custom colours array after converting
  135.         ' it to Unicode using the StrConv function.
  136.         .flags = 0&
  137.         ' For this sample, we do not need to use this.
  138.         .lStructSize = Len(tChooseColour)
  139.         ' Set the size of the type structure.
  140.     End With
  141.     If ShowColour(tChooseColour) = 0 Then
  142.         ChooseColour = -1
  143.         Exit Function
  144.     End If
  145.  
  146.     ChooseColour = tChooseColour.rgbResult
  147. End Function
  148.  
  149. Sub Main()
  150. On Error Resume Next
  151.     '// Extensibilty still to be finished
  152.     Dim blnBefore As Boolean
  153.  
  154.     blnBefore = GetSetting(ThisApp, "General", "Installed", False)
  155.     If blnBefore = False Then
  156.         WritePrivateProfileString "Add-Ins32", "prjDevBook.Connect", "0", "vbaddin.ini"
  157.         SaveSetting ThisApp, "General", "Installed", "True"
  158.         Shell App.Path & "\prjDLL.exe"
  159.         DoEvents
  160.         MsgBox "The Add-In has been installed. Run this program again to start using it."
  161.         End
  162.     Else
  163.     If App.StartMode = 0 Then frmMain.Show
  164.     End If
  165.     'frmMain.Show
  166. End Sub
  167.  
  168. Public Sub ClearTree(tvw As TreeView)
  169.     '// Fast Clearing of treeview by Brad Martinez
  170.     '// http://members.aol.com/bmtz/
  171.  
  172.     Dim lngHwnd As Long
  173.     Dim lngHItem As Long
  174.  
  175.     lngHwnd = tvw.hwnd
  176.  
  177.     Do
  178.         lngHItem = SendMessageLong(lngHwnd, TVM_GETNEXTITEM, TVGN_ROOT, &O0)
  179.         If lngHItem > 0 Then
  180.             SendMessageLong lngHwnd, TVM_DELETEITEM, &O0, lngHItem
  181.         Else
  182.             Exit Do
  183.         End If
  184.     Loop
  185. End Sub
  186.  
  187. Public Function LastDB() As String
  188.  
  189.     LastDB = GetSetting(ThisApp, "General", "DBPath")
  190.  
  191. End Function
  192.  
  193. Function GetSelectedText(VBInstance As VBIDE.VBE) As String
  194.      Dim startLine As Long, startCol As Long
  195.      Dim endLine As Long, endCol As Long
  196.      Dim codeText As String
  197.      Dim cpa As VBIDE.CodePane
  198.      Dim cmo As VBIDE.CodeModule
  199.    
  200.      On Error Resume Next
  201.    
  202.      ' get a reference to the active code window and the underlying module
  203.      ' exit if no one is available
  204.      Set cpa = VBInstance.ActiveCodePane
  205.      Set cmo = cpa.CodeModule
  206.      If Err Then Exit Function
  207.    
  208.      ' get the current selection coordinates
  209.      cpa.GetSelection startLine, startCol, endLine, endCol
  210.      ' exit if no text is highlighted
  211.      If startLine = endLine And startCol = endCol Then Exit Function
  212.    
  213.      ' get the code text
  214.      If startLine = endLine Then
  215.           ' only one line is partially or fully highlighted
  216.           codeText = mID$(cmo.Lines(startLine, 1), startCol, endCol - startCol)
  217.      Else
  218.           ' the selection spans multiple lines of code
  219.           ' first, get the selection of the first line
  220.           codeText = mID$(cmo.Lines(startLine, 1), startCol) & vbCrLf
  221.           ' then get the lines in the middle, that are fully highlighted
  222.           If startLine + 1 < endLine Then
  223.                codeText = codeText & cmo.Lines(startLine + 1, _
  224.                    endLine - startLine - 1)
  225.           End If
  226.           ' finally, get the highlighted portion of the last line
  227.           codeText = codeText & left$(cmo.Lines(endLine, 1), endCol - 1)
  228.      End If
  229.    
  230.      GetSelectedText = codeText
  231. End Function
  232.  
  233.  
  234.